import pymysql
import pandas as pd
import json

def get_latest_email(userid="me"):
    """
        获取最新的一封邮件
        参数:
        user_id: 要检索邮件的用户的ID。默认值是'me'，数据格式为字符串类型。

        返回:
        一个列表，其中每个元素都是一个字典，表示一封邮件。每个字典包含以下键：
        'from_userid': 发件人ID。
        'date': 邮件的发送日期。
        'subject': 邮件的主题。
        'snippet': 邮件的摘要（前100个字符）。
    """
    mysql_pw = "gpt"

    connection = pymysql.connect(
        host='localhost',  # 数据库地址
        user='gpt',  # 数据库用户名
        passwd=mysql_pw,  # 数据库密码
        db='my_mail',  # 数据库名
        charset='utf8'  # 字符集选择utf8
    )
    sql_query = f"SELECT * FROM mailbox WHERE userid = '{userid}' ORDER BY date DESC LIMIT 1";

    try:
        with connection.cursor() as cursor:
            sql = sql_query
            cursor.execute(sql)
            results = cursor.fetchall()
    finally:
        cursor.close()

    column_names = [desc[0] for desc in cursor.description]

    # 使用results和column_names创建DataFrame
    df = pd.DataFrame(results, columns=column_names)

    return df.to_json(orient="records")


from pymysql.cursors import DictCursor

def get_latest_unread_email_from_sender(userId="me", sender=None):
    """
    检查指定邮箱中来自特定发件人的未读邮件，并返回最近一封未读邮件的内容。

    参数:
    - userId (str): 要查询的邮箱账户ID，默认值为'me'。
    - sender (str): 指定的发件人名称。

    返回:
    - json格式对象: 如果存在未读邮件，则返回一个包含以下键的对象：
        - 'status': 邮件状态（'未读'或'无未读邮件'）。
        - 'content': 邮件内容（如果有未读邮件）。
      如果没有未读邮件，则只返回一个包含'status'键的对象，其值为'无未读邮件'。

    注意：
    - 本函数假设数据库中存储的未读邮件状态为'未读'。
    - 请确保数据库连接信息（如host, user, passwd, db）与实际配置一致。
    """

    # 假设以下为数据库连接信息，请根据实际情况修改
    host = 'localhost'
    user = 'root'
    passwd = '1qaz2wsx'
    db = 'my_mail'

    # 连接数据库
    connection = pymysql.connect(host=host, user=user, passwd=passwd, db=db, charset='utf8', cursorclass=DictCursor)
    try:
        with connection.cursor() as cursor:
            # 查询特定发件人的未读邮件
            sql_query = f"""
                SELECT * FROM mailbox
                WHERE userid = %s AND from_userid = %s AND status = '未读'
                ORDER BY date DESC
                LIMIT 1
            """
            cursor.execute(sql_query, (userId, sender))
            result = cursor.fetchone()
            if result:
                # 如果有未读邮件，返回邮件内容和状态
                email_content = {
                    'status': '未读',
                    'content': result
                }
                return json.dumps(email_content, ensure_ascii=False)
            else:
                # 如果没有未读邮件，返回状态信息
                return json.dumps({'status': '无未读邮件'}, ensure_ascii=False)
    finally:
        connection.close()

print(get_latest_unread_email_from_sender(userId='me', sender='陆小凤'))